package com.wande.dataplatform.filecollection.source;

import java.io.InputStream;
import java.util.List;

/**
 * 文件来源接口
 *
 * @author wande
 */
public interface IFileSource {

    /**
     * 获取支持的来源类型
     *
     * @return 来源类型
     */
    String getSupportedSourceType();

    /**
     * 列出文件
     *
     * @param config 来源配置(JSON格式)
     * @return 文件路径列表
     */
    List<String> listFiles(String config);

    /**
     * 获取文件输入流
     *
     * @param config   来源配置(JSON格式)
     * @param filePath 文件路径
     * @return 文件输入流
     */
    InputStream getFileStream(String config, String filePath);

    /**
     * 获取文件大小
     *
     * @param config   来源配置(JSON格式)
     * @param filePath 文件路径
     * @return 文件大小(字节)
     */
    long getFileSize(String config, String filePath);

    /**
     * 测试连接
     *
     * @param config 来源配置(JSON格式)
     * @return 是否连接成功
     */
    boolean testConnection(String config);
}
